package utils

import (
	"fmt"
	"strconv"
	"strings"
)

// ConvertHexPortToDecimal 将注册表中的十六进制端口值转换为十进制
// @param hexValue 注册表中的十六进制字符串（如 "0xd3d"） 会转换为 3389
// @returns 十进制端口号和错误信息
func ConvertHexPortToDecimal(hexValue string) (int, error) {
	// 去除前缀 "0x"（如果有）
	cleanHex := strings.TrimPrefix(hexValue, "0x")

	// 转换为十进制
	port, err := strconv.ParseInt(cleanHex, 16, 64)
	if err != nil {
		return 0, fmt.Errorf("无效的十六进制值: %s (%v)", hexValue, err)
	}

	// 验证有效性
	if port < 1 || port > 65535 {
		return 0, fmt.Errorf("端口号 %d 超出有效范围 (1-65535)", port)
	}

	return int(port), nil
}
